package glock

import "time"

// 分布式锁，需要能够设置过期时间
// tcp 服务端
// 1. 监听端口
// 2. 接收客户端连接
// 3. 处理客户端请求
// 4. 释放锁
// 5. 关闭连接
// 6. 关闭服务端

// tcp 客户端
// 1. 连接服务端
// 2. 发送请求
// 3. 接收响应
// 4. 关闭连接

type GLock interface {
	// Lock 加锁，如果锁已经被占用，返回false
	Lock(key string, expire time.Duration) bool
	// Unlock 释放锁
	Unlock(key string)
}

// Lock 每个锁，有过期时间，过期时间到了，锁需要释放
type Lock struct {
	// 锁的名称
	Name string
	// 锁的过期时间
	ExpireAt time.Time
}
